package cacheserial;

import cacheserial.enumate.CacheRequestType;

import java.util.concurrent.Callable;

/**
 * 缓存串行请求
 *
 * @param <E>
 * @author Aimy
 */
public interface ICacheSerialRequest<E> extends Callable<E> {

    /**
     * 请求类型 0-读；1-写；
     *
     * @return
     */
    default CacheRequestType getType() {
        return CacheRequestType.READ;
    }

    /**
     * 自定义实现：发起请求
     *
     * @return 返回接口需要的实体
     * @throws Exception
     */
    E processor() throws Exception;

    /**
     * 线程默认方法
     *
     * @return
     * @throws Exception
     */
    @Override
    default E call() throws Exception {
        return processor();
    }

    /**
     * 描述
     *
     * @return
     */
    String getDsc();

    /**
     * 获取主键
     *
     * @return
     */
    Object getKey();

}
